/*
 * Distanza.java
 * Entity Bean utilizzato per rappresentare e memorizzare le distanze tra varie città,
 * e l'itinerario proposto dall'agenzia di viaggio di Torino che mette a disposizione
 * il servizio
 */

package ejb;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 * Tabella che rappresenta l'eventuale itinerario messo a disposizion
 * dal'agenzia di viaggio di Torino, prende come chiave primaria
 * l'oggetto DistanzaPK formato da (cittaPartenza, cittaArrivo, codiceTrasporto viaggio)
 * Il codice di trasporto rappresenta il tipo di pulman che l'agenzia mette a disposizione
 * per il sito hometeatre
 * @author Rosario Salone
 * @version 1.0
 */
@Entity
@Table(name = "DISTANZA")
@NamedQueries({@NamedQuery(name = "Distanza.findByPartenza", query = "SELECT d FROM Distanza d WHERE d.distanzaPK.partenza = :partenza"), @NamedQuery(name = "Distanza.findByDestinazione", query = "SELECT d FROM Distanza d WHERE d.distanzaPK.destinazione = :destinazione"), @NamedQuery(name = "Distanza.findByTrasporto", query = "SELECT d FROM Distanza d WHERE d.distanzaPK.trasporto = :trasporto"), @NamedQuery(name = "Distanza.findByPrezzo", query = "SELECT d FROM Distanza d WHERE d.prezzo = :prezzo"), @NamedQuery(name = "Distanza.findByDistanza", query = "SELECT d FROM Distanza d WHERE d.distanza = :distanza")})
public class Distanza implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DistanzaPK distanzaPK;
    @Column(name = "PREZZO", nullable = false)
    private int prezzo;
    @Column(name = "DISTANZA", nullable = false)
    private int distanza;

    public Distanza() {
    }
/**
 *Costruttore della distanza
 * @param distanzaPk la chiave primaria della classe
 */

    public Distanza(DistanzaPK distanzaPK) {
        this.distanzaPK = distanzaPK;
    }
/**
 *Costruttore della distanza
 * @param distanzaPk la chiave primaria della classe
 * @param prezzo prezzo dell'itinerario
 * @param distanza la distanza in km tra le due città chiave
 */

    public Distanza(DistanzaPK distanzaPK, int prezzo, int distanza) {
        this.distanzaPK = distanzaPK;
        this.prezzo = prezzo;
        this.distanza = distanza;
    }
/**
 *Costruttore della distanza
 * @param partenza la chiave primaria della classe
 * @param destinazione chiave primaria
 * @param trasporto chiave primaria
 */

    public Distanza(String partenza, String destinazione, int trasporto) {
        this.distanzaPK = new DistanzaPK(partenza, destinazione, trasporto);
    }

    /**
 *Ritorna la chiave primaria dell'oggetto
 * @return distanzaPK
 */

    public DistanzaPK getDistanzaPK() {
        return distanzaPK;
    }

    public void setDistanzaPK(DistanzaPK distanzaPK) {
        this.distanzaPK = distanzaPK;
    }
/**
 *Ritorna il prezzo della distanza
 * @return prezzo
 */

    public int getPrezzo() {
        return prezzo;
    }
/**
 *Costruttore della distanza
 * @param prezzo il prezzo della distanza
 */

    public void setPrezzo(int prezzo) {
        this.prezzo = prezzo;
    }
/**
 *Ritorna la distanza
 * @return distanza
 */

    public int getDistanza() {
        return distanza;
    }
/**
 *Costruttore della distanza
 * @param distanza la distanza del viaggio
 */

    public void setDistanza(int distanza) {
        this.distanza = distanza;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (distanzaPK != null ? distanzaPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Distanza)) {
            return false;
        }
        Distanza other = (Distanza) object;
        if ((this.distanzaPK == null && other.distanzaPK != null) || (this.distanzaPK != null && !this.distanzaPK.equals(other.distanzaPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "ejb.Distanza[distanzaPK=" + distanzaPK + "]";
    }

}
